package pro.softzhang.algo.lc2400;

import pro.softzhang.algo.abc.Hash;

import java.util.HashMap;
import java.util.Map;

/**
 *
 */
public class LC2461_MaximumSumOfDistinctSubarraysWithLengthK {
    public static void main(String[] args) {

    }

    static
    class Solution {
        public long maximumSubarraySum(int[] nums, int k) {
            int max = 0, sum = 0;
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < nums.length; i++) {
                sum += nums[i];
                map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);

                // 进窗
                if (i < k - 1) {
                    continue;
                }

                // 更新
                if (map.size() == k) {
                    max = Math.max(max, sum);
                }

                // 出窗
                sum -= nums[i - k + 1];
                if (map.get(nums[i - k + 1]) > 1) {
                    map.remove(nums[i - k + 1]);
                } else {
                    map.put(nums[i - k + 1], map.get(nums[i - k + 1]) - 1);
                }
            }
            return max;
        }
    }
}
